home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue25 / compress / COMPRESS.ZIP / OBJS.ZIP / COMPRESS.HPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-09  |  18.5 KB  |  373 lines

  1. //----------------------------------------------------------------------------
  2. // Compress.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0
  3. // From: Compress.pas
  4. //----------------------------------------------------------------------------
  5. #ifndef CompressHPP
  6. #define CompressHPP
  7. //----------------------------------------------------------------------------
  8. #include <Classes.hpp>
  9. #include <Windows.hpp>
  10. #include <SysUtils.hpp>
  11. #include <System.hpp>
  12. namespace Compress
  13. {
  14. //-- type declarations -------------------------------------------------------
  15. class __declspec(delphiclass) EInsufficientDiskSpace;
  16. class __declspec(pascalimplementation) EInsufficientDiskSpace : public Sysutils::Exception
  17. {
  18.     typedef Sysutils::Exception inherited;
  19.     
  20. public:
  21.     /* Exception.Create */ __fastcall EInsufficientDiskSpace(const System::AnsiString Msg) : Sysutils::
  22.         Exception(Msg) { }
  23.     /* Exception.CreateFmt */ __fastcall EInsufficientDiskSpace(const System::AnsiString Msg, const System::TVarRec 
  24.         * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
  25.     /* Exception.CreateRes */ __fastcall EInsufficientDiskSpace(int Ident) : Sysutils::Exception(Ident)
  26.          { }
  27.     /* Exception.CreateResFmt */ __fastcall EInsufficientDiskSpace(int Ident, const System::TVarRec * Args
  28.         , const int Args_Size) : Sysutils::Exception(Ident, Args, Args_Size) { }
  29.     /* Exception.CreateHelp */ __fastcall EInsufficientDiskSpace(const System::AnsiString Msg, int AHelpContext
  30.         ) : Sysutils::Exception(Msg, AHelpContext) { }
  31.     /* Exception.CreateFmtHelp */ __fastcall EInsufficientDiskSpace(const System::AnsiString Msg, const 
  32.         System::TVarRec * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size
  33.         , AHelpContext) { }
  34.     /* Exception.CreateResHelp */ __fastcall EInsufficientDiskSpace(int Ident, int AHelpContext) : Sysutils::
  35.         Exception(Ident, AHelpContext) { }
  36.     /* Exception.CreateResFmtHelp */ __fastcall EInsufficientDiskSpace(int Ident, const System::TVarRec 
  37.         * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Ident, Args, Args_Size, AHelpContext
  38.         ) { }
  39.     
  40. public:
  41.     /* TObject.Destroy */ __fastcall virtual ~EInsufficientDiskSpace(void) { }
  42.     
  43. };
  44.  
  45. class __declspec(delphiclass) EUnrecognizedCompressionMethod;
  46. class __declspec(pascalimplementation) EUnrecognizedCompressionMethod : public Sysutils::Exception
  47. {
  48.     typedef Sysutils::Exception inherited;
  49.     
  50. public:
  51.     /* Exception.Create */ __fastcall EUnrecognizedCompressionMethod(const System::AnsiString Msg) : Sysutils::
  52.         Exception(Msg) { }
  53.     /* Exception.CreateFmt */ __fastcall EUnrecognizedCompressionMethod(const System::AnsiString Msg, const 
  54.         System::TVarRec * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
  55.     /* Exception.CreateRes */ __fastcall EUnrecognizedCompressionMethod(int Ident) : Sysutils::Exception(
  56.         Ident) { }
  57.     /* Exception.CreateResFmt */ __fastcall EUnrecognizedCompressionMethod(int Ident, const System::TVarRec 
  58.         * Args, const int Args_Size) : Sysutils::Exception(Ident, Args, Args_Size) { }
  59.     /* Exception.CreateHelp */ __fastcall EUnrecognizedCompressionMethod(const System::AnsiString Msg, 
  60.         int AHelpContext) : Sysutils::Exception(Msg, AHelpContext) { }
  61.     /* Exception.CreateFmtHelp */ __fastcall EUnrecognizedCompressionMethod(const System::AnsiString Msg
  62.         , const System::TVarRec * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, 
  63.         Args, Args_Size, AHelpContext) { }
  64.     /* Exception.CreateResHelp */ __fastcall EUnrecognizedCompressionMethod(int Ident, int AHelpContext
  65.         ) : Sysutils::Exception(Ident, AHelpContext) { }
  66.     /* Exception.CreateResFmtHelp */ __fastcall EUnrecognizedCompressionMethod(int Ident, const System::TVarRec 
  67.         * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Ident, Args, Args_Size, AHelpContext
  68.         ) { }
  69.     
  70. public:
  71.     /* TObject.Destroy */ __fastcall virtual ~EUnrecognizedCompressionMethod(void) { }
  72.     
  73. };
  74.  
  75. class __declspec(delphiclass) EInvalidHeaderArchiveType;
  76. class __declspec(pascalimplementation) EInvalidHeaderArchiveType : public Sysutils::Exception
  77. {
  78.     typedef Sysutils::Exception inherited;
  79.     
  80. public:
  81.     /* Exception.Create */ __fastcall EInvalidHeaderArchiveType(const System::AnsiString Msg) : Sysutils::
  82.         Exception(Msg) { }
  83.     /* Exception.CreateFmt */ __fastcall EInvalidHeaderArchiveType(const System::AnsiString Msg, const 
  84.         System::TVarRec * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
  85.     /* Exception.CreateRes */ __fastcall EInvalidHeaderArchiveType(int Ident) : Sysutils::Exception(Ident
  86.         ) { }
  87.     /* Exception.CreateResFmt */ __fastcall EInvalidHeaderArchiveType(int Ident, const System::TVarRec 
  88.         * Args, const int Args_Size) : Sysutils::Exception(Ident, Args, Args_Size) { }
  89.     /* Exception.CreateHelp */ __fastcall EInvalidHeaderArchiveType(const System::AnsiString Msg, int AHelpContext
  90.         ) : Sysutils::Exception(Msg, AHelpContext) { }
  91.     /* Exception.CreateFmtHelp */ __fastcall EInvalidHeaderArchiveType(const System::AnsiString Msg, const 
  92.         System::TVarRec * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size
  93.         , AHelpContext) { }
  94.     /* Exception.CreateResHelp */ __fastcall EInvalidHeaderArchiveType(int Ident, int AHelpContext) : Sysutils::
  95.         Exception(Ident, AHelpContext) { }
  96.     /* Exception.CreateResFmtHelp */ __fastcall EInvalidHeaderArchiveType(int Ident, const System::TVarRec 
  97.         * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Ident, Args, Args_Size, AHelpContext
  98.         ) { }
  99.     
  100. public:
  101.     /* TObject.Destroy */ __fastcall virtual ~EInvalidHeaderArchiveType(void) { }
  102.     
  103. };
  104.  
  105. class __declspec(delphiclass) EInvalidHeader;
  106. class __declspec(pascalimplementation) EInvalidHeader : public Sysutils::Exception
  107. {
  108.     typedef Sysutils::Exception inherited;
  109.     
  110. public:
  111.     /* Exception.Create */ __fastcall EInvalidHeader(const System::AnsiString Msg) : Sysutils::Exception(
  112.         Msg) { }
  113.     /* Exception.CreateFmt */ __fastcall EInvalidHeader(const System::AnsiString Msg, const System::TVarRec 
  114.         * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
  115.     /* Exception.CreateRes */ __fastcall EInvalidHeader(int Ident) : Sysutils::Exception(Ident) { }
  116.     /* Exception.CreateResFmt */ __fastcall EInvalidHeader(int Ident, const System::TVarRec * Args, const 
  117.         int Args_Size) : Sysutils::Exception(Ident, Args, Args_Size) { }
  118.     /* Exception.CreateHelp */ __fastcall EInvalidHeader(const System::AnsiString Msg, int AHelpContext
  119.         ) : Sysutils::Exception(Msg, AHelpContext) { }
  120.     /* Exception.CreateFmtHelp */ __fastcall EInvalidHeader(const System::AnsiString Msg, const System::TVarRec 
  121.         * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size, AHelpContext
  122.         ) { }
  123.     /* Exception.CreateResHelp */ __fastcall EInvalidHeader(int Ident, int AHelpContext) : Sysutils::Exception(
  124.         Ident, AHelpContext) { }
  125.     /* Exception.CreateResFmtHelp */ __fastcall EInvalidHeader(int Ident, const System::TVarRec * Args, 
  126.         const int Args_Size, int AHelpContext) : Sysutils::Exception(Ident, Args, Args_Size, AHelpContext)
  127.          { }
  128.     
  129. public:
  130.     /* TObject.Destroy */ __fastcall virtual ~EInvalidHeader(void) { }
  131.     
  132. };
  133.  
  134. class __declspec(delphiclass) EBadChecksum;
  135. class __declspec(pascalimplementation) EBadChecksum : public Sysutils::Exception
  136. {
  137.     typedef Sysutils::Exception inherited;
  138.     
  139. public:
  140.     /* Exception.Create */ __fastcall EBadChecksum(const System::AnsiString Msg) : Sysutils::Exception(
  141.         Msg) { }
  142.     /* Exception.CreateFmt */ __fastcall EBadChecksum(const System::AnsiString Msg, const System::TVarRec 
  143.         * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
  144.     /* Exception.CreateRes */ __fastcall EBadChecksum(int Ident) : Sysutils::Exception(Ident) { }
  145.     /* Exception.CreateResFmt */ __fastcall EBadChecksum(int Ident, const System::TVarRec * Args, const 
  146.         int Args_Size) : Sysutils::Exception(Ident, Args, Args_Size) { }
  147.     /* Exception.CreateHelp */ __fastcall EBadChecksum(const System::AnsiString Msg, int AHelpContext) : 
  148.         Sysutils::Exception(Msg, AHelpContext) { }
  149.     /* Exception.CreateFmtHelp */ __fastcall EBadChecksum(const System::AnsiString Msg, const System::TVarRec 
  150.         * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size, AHelpContext
  151.         ) { }
  152.     /* Exception.CreateResHelp */ __fastcall EBadChecksum(int Ident, int AHelpContext) : Sysutils::Exception(
  153.         Ident, AHelpContext) { }
  154.     /* Exception.CreateResFmtHelp */ __fastcall EBadChecksum(int Ident, const System::TVarRec * Args, const 
  155.         int Args_Size, int AHelpContext) : Sysutils::Exception(Ident, Args, Args_Size, AHelpContext) { }
  156.     
  157. public:
  158.     /* TObject.Destroy */ __fastcall virtual ~EBadChecksum(void) { }
  159.     
  160. };
  161.  
  162. class __declspec(delphiclass) EInvalidKey;
  163. class __declspec(pascalimplementation) EInvalidKey : public Sysutils::Exception
  164. {
  165.     typedef Sysutils::Exception inherited;
  166.     
  167. public:
  168.     /* Exception.Create */ __fastcall EInvalidKey(const System::AnsiString Msg) : Sysutils::Exception(Msg
  169.         ) { }
  170.     /* Exception.CreateFmt */ __fastcall EInvalidKey(const System::AnsiString Msg, const System::TVarRec 
  171.         * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
  172.     /* Exception.CreateRes */ __fastcall EInvalidKey(int Ident) : Sysutils::Exception(Ident) { }
  173.     /* Exception.CreateResFmt */ __fastcall EInvalidKey(int Ident, const System::TVarRec * Args, const 
  174.         int Args_Size) : Sysutils::Exception(Ident, Args, Args_Size) { }
  175.     /* Exception.CreateHelp */ __fastcall EInvalidKey(const System::AnsiString Msg, int AHelpContext) : 
  176.         Sysutils::Exception(Msg, AHelpContext) { }
  177.     /* Exception.CreateFmtHelp */ __fastcall EInvalidKey(const System::AnsiString Msg, const System::TVarRec 
  178.         * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size, AHelpContext
  179.         ) { }
  180.     /* Exception.CreateResHelp */ __fastcall EInvalidKey(int Ident, int AHelpContext) : Sysutils::Exception(
  181.         Ident, AHelpContext) { }
  182.     /* Exception.CreateResFmtHelp */ __fastcall EInvalidKey(int Ident, const System::TVarRec * Args, const 
  183.         int Args_Size, int AHelpContext) : Sysutils::Exception(Ident, Args, Args_Size, AHelpContext) { }
  184.     
  185. public:
  186.     /* TObject.Destroy */ __fastcall virtual ~EInvalidKey(void) { }
  187.     
  188. };
  189.  
  190. enum TCompressArchiveType { caSingle, caMulti };
  191.  
  192. enum TCompressionMethod { coNone, coRLE, coLZH, coCustom, coLZH5 };
  193.  
  194. enum TCProcessMode { cmCompress, cmExpand, cmDelete };
  195.  
  196. struct TCompressHeader
  197. {
  198.     char ComId[5];
  199.     char ComMethodId[3];
  200.     long Fullsize;
  201.     TCompressArchiveType ArchiveType;
  202.     long Checksum;
  203.     long Locked;
  204. } ;
  205.  
  206. struct TCompressedFileHeader
  207. {
  208.     short FileNameLength;
  209.     long Datetime;
  210.     short Attributes;
  211.     long Fullsize;
  212.     long CompressedSize;
  213.     TCompressionMethod CompressedMode;
  214.     long Checksum;
  215.     long Locked;
  216. } ;
  217.  
  218. class __declspec(delphiclass) TCompressedFileInfo;
  219. class __declspec(pascalimplementation) TCompressedFileInfo : public System::TObject
  220. {
  221.     typedef System::TObject inherited;
  222.     
  223. public:
  224.     long Datetime;
  225.     short Attributes;
  226.     long Fullsize;
  227.     long CompressedSize;
  228.     TCompressionMethod CompressedMode;
  229.     long Checksum;
  230.     long Position;
  231.     bool Locked;
  232. public:
  233.     /* TObject.Create */ __fastcall TCompressedFileInfo(void) : System::TObject() { }
  234.     /* TObject.Destroy */ __fastcall virtual ~TCompressedFileInfo(void) { }
  235.     
  236. };
  237.  
  238. typedef void __fastcall (__closure *TFilenameCheckEvent)( System::AnsiString &filepath, TCProcessMode 
  239.     mode);
  240.  
  241. typedef void __fastcall (__closure *TCompressEvent)(Classes::TStream* dest, Classes::TStream* source
  242.     ,  System::AnsiString &CompressID, long &Outputsize, long &checksum);
  243.  
  244. typedef void __fastcall (__closure *TExpandEvent)(Classes::TStream* dest, Classes::TStream* source, 
  245.     long Sourcesize, long Destsize,  System::AnsiString CompressID, long &checksum);
  246.  
  247. typedef void __fastcall (__closure *TRecognizeEvent)( System::AnsiString CompressID, bool &recognized
  248.     );
  249.  
  250. typedef void __fastcall (__closure *TShowProgressEvent)(long &PercentageDone);
  251.  
  252. class __declspec(delphiclass) TCompress;
  253. class __declspec(pascalimplementation) TCompress : public Classes::TComponent
  254. {
  255.     typedef Classes::TComponent inherited;
  256.     
  257. private:
  258.     System::AnsiString FRegName;
  259.     long FRegNumber;
  260.     int FCompressedToPercentage;
  261.     long FCompressionTime;
  262.     TCompressEvent FOnCompress;
  263.     TExpandEvent FOnExpand;
  264.     TRecognizeEvent FOnRecognize;
  265.     TFilenameCheckEvent FOnCheckFile;
  266.     TShowProgressEvent FOnShowProgress;
  267.     System::AnsiString FTargetPath;
  268.     bool FMakeDirectories;
  269.     long FKeyNum;
  270.     bool FExceptionOnFileError;
  271.     bool FCheckSpaceBeforeExpand;
  272.     long FMustCompressByAtLeast;
  273.     System::AnsiString __fastcall ProcessString(const System::AnsiString str, TCompressionMethod compressionMethod
  274.         , TCProcessMode mode);
  275.     long __fastcall CheckDiskSpace( System::AnsiString filename);
  276.     void __fastcall SetTargetPath(const System::AnsiString path);
  277.     int __fastcall GetCompressedPercentage(void);
  278.     long __fastcall ProcessStreams(Classes::TStream* outstream, Classes::TStream* instream, long Sourcesize
  279.         , long destSize, TCompressionMethod CompressionMethod, long &checksum, TCProcessMode mode, bool Encrypted
  280.         );
  281.     
  282. protected:
  283.     void __fastcall AppendFilesExcept(const System::AnsiString destfile, const System::AnsiString fromfile
  284.         , Classes::TStringList* notfiles);
  285.     void __fastcall SetHeader(TCompressHeader &hdr,  System::AnsiString cID, TCompressArchiveType aType
  286.         , long size);
  287.     bool __fastcall GetFileHeader(Classes::TStream* Stream, TCompressedFileHeader &Fhdr,  System::AnsiString &
  288.         Filename);
  289.     void __fastcall PutFileHeader(Classes::TStream* Stream, TCompressedFileHeader &Fhdr, const System::AnsiString 
  290.         Filename);
  291.     void __fastcall CheckHeader(Classes::TStream* compressedFile, TCompressHeader &hdr,  System::AnsiString &
  292.         CID);
  293.     
  294. public:
  295.     System::AnsiString __fastcall CompressString(const System::AnsiString unCompressedString, TCompressionMethod 
  296.         compressionMethod);
  297.     System::AnsiString __fastcall ExpandString(const System::AnsiString CompressedString);
  298.     long __fastcall DoCompress(Classes::TStream* compressedStream, Classes::TStream* uncompressedStream
  299.         , TCompressionMethod compressionMethod,  System::AnsiString &CompressID, long &checksum);
  300.     void __fastcall DoExpand(Classes::TStream* expandedStream, Classes::TStream* unexpandedStream, long 
  301.         compressedsize, long fullsize, long checksum, TCompressionMethod compressionMethod, const System::AnsiString 
  302.         CompressID, long FLocked);
  303.     TCompressionMethod __fastcall Recognize(const System::AnsiString cID);
  304.     void __fastcall Compress(Classes::TStream* compressedStream, Classes::TStream* uncompressedStream, 
  305.         TCompressionMethod compressionMethod);
  306.     void __fastcall Expand(Classes::TStream* expandedStream, Classes::TStream* unexpandedStream);
  307.     void __fastcall CompressStreamToArchiveStream(Classes::TStream* compressedStream, Classes::TStream* 
  308.         uncompressedStream, const System::AnsiString Filename, const TCompressedFileHeader &FHdr,  System::AnsiString &
  309.         cID, TCompressionMethod CompressionMode);
  310.     void __fastcall CompressStreamToArchive( System::AnsiString arcFile, Classes::TStream* uncompressedStream
  311.         , const System::AnsiString fileName, TCompressionMethod CompressionMode);
  312.     void __fastcall ExpandStreamFromArchive( System::AnsiString arcFile, Classes::TStream* uncompressedStream
  313.         ,  System::AnsiString fileName);
  314.     long __fastcall CompressFilesToStream(Classes::TStream* dest, Classes::TStringList* &whichfiles, TCompressionMethod 
  315.         CompressionMode);
  316.     void __fastcall CompressFiles(const System::AnsiString arcFile, Classes::TStringList* whichfiles, TCompressionMethod 
  317.         CompressionMode);
  318.     void __fastcall CompressFile(const System::AnsiString arcfile,  System::AnsiString &fromFile, TCompressionMethod 
  319.         CompressionMode);
  320.     void __fastcall DeleteFiles(const System::AnsiString arcFile, Classes::TStringList* whichfiles);
  321.     void __fastcall ExpandFile( System::AnsiString &toFile, const System::AnsiString arcfile);
  322.     void __fastcall ExpandFiles(const System::AnsiString arcfile, Classes::TStringList* whichfiles);
  323.     void __fastcall ExpandFilesFromStream(Classes::TStream* compressedstream, Classes::TStringList* whichfiles
  324.         );
  325.     void __fastcall ScanCompressedStream(Classes::TStream* compressedstream, Classes::TStringList* &Finfo
  326.         );
  327.     void __fastcall ScanCompressedFile(const System::AnsiString arcfile, Classes::TStringList* &Finfo);
  328.         
  329.     __property int CompressedPercentage = {read=GetCompressedPercentage, nodefault};
  330.     __property long CompressionTime = {read=FCompressionTime, nodefault};
  331.     Classes::TStream* __fastcall LoadCompressedResource( System::AnsiString ResourceName,  System::AnsiString 
  332.         DLLName);
  333.     Classes::TStream* __fastcall LoadExpandedResource( System::AnsiString ResourceName,  System::AnsiString 
  334.         DLLName);
  335.     void __fastcall FreeFileList(Classes::TStringList* Finfo);
  336.     void __fastcall GetAllFilesInDir(Classes::TStringList* list,  System::AnsiString dirname, const System::AnsiString 
  337.         match, bool Anything);
  338.     void __fastcall GetMatchingFiles(Classes::TStringList* list, const System::AnsiString matchname);
  339.     
  340. __published:
  341.     __property System::AnsiString RegName = {read=FRegName, write=FRegName, nodefault};
  342.     __property long RegNumber = {read=FRegNumber, write=FRegNumber, nodefault};
  343.     __property TCompressEvent OnCompress = {read=FOnCompress, write=FOnCompress};
  344.     __property TExpandEvent OnExpand = {read=FOnExpand, write=FOnExpand};
  345.     __property TFilenameCheckEvent OnCheckFile = {read=FOnCheckFile, write=FOnCheckFile};
  346.     __property TRecognizeEvent OnRecognize = {read=FOnRecognize, write=FOnRecognize};
  347.     __property TShowProgressEvent OnShowProgress = {read=FOnShowProgress, write=FOnShowProgress};
  348.     __property System::AnsiString TargetPath = {read=FTargetPath, write=SetTargetPath, nodefault};
  349.     __property bool MakeDirectories = {read=FMakeDirectories, write=FMakeDirectories, nodefault};
  350.     __property bool ExceptionOnFileError = {read=FExceptionOnFileError, write=FExceptionOnFileError, nodefault
  351.         };
  352.     __property long Key = {read=FKeyNum, write=FKeyNum, nodefault};
  353.     __property bool CheckSpaceBeforeExpand = {read=FCheckSpaceBeforeExpand, write=FCheckSpaceBeforeExpand
  354.         , nodefault};
  355. public:
  356.     /* TComponent.Create */ __fastcall virtual TCompress(Classes::TComponent* AOwner) : Classes::TComponent(
  357.         AOwner) { }
  358.     /* TComponent.Destroy */ __fastcall virtual ~TCompress(void) { }
  359.     
  360. };
  361.  
  362. //-- var, const, procedure ---------------------------------------------------
  363. #define CompressNoMoreFlag (char)(42)
  364. #define CompressSkipFlag ""
  365. extern void __fastcall Register(void);
  366.  
  367. }    /* namespace Compress */
  368. #if !defined(NO_IMPLICIT_NAMESPACE_USE)
  369. using namespace Compress;
  370. #endif
  371. //-- end unit ----------------------------------------------------------------
  372. #endif    // Compress
  373.